package com.liuwei.msmall.order.vo;

import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Classname OrderConfirmVo
 * @Date 2021/4/30 21:10
 * @Created by 刘
 */
public class OrderConfirmVo {
    //直接统一的查询出这个订单项所对应的所有的商品的库存信息，不用每个商品都去一个一个查
    //提高查询效率
    @Setter
    @Getter
    private Map<Long,Boolean> stocks;

    //收货地址
    @Setter @Getter
    private List<UserAddressVo> addressVos;

    //默认地址
    UserAddressVo defaultAddress;

    public UserAddressVo getDefaultAddress() {
        if (addressVos!=null&&addressVos.size()>0){
            for (UserAddressVo vo : addressVos) {
                if (vo.getDefaultStatus()==1){
                    return vo;
                }
            }
        }
        return null;
    }

    //订单购物项
    @Setter @Getter
    private List<OrderConfirmItemVo> items;

    //发票记录

    //优惠项,金豆，积分
    @Setter @Getter
    private Integer integration;

    Integer totalCount;

    public Integer getTotalCount() {
        if (items!=null&&items.size()>0){
            int sum=0;
            for (OrderConfirmItemVo item : items) {
                sum=sum+item.getCountNum();
            }
            return sum;
        }
        return null;
    }

    //总金额

    private BigDecimal total;

    //token令牌，防止订单信息的重复提交
    @Setter @Getter
    private String token;




    //动态计算出总金额
    public BigDecimal getTotal() {
        if (items!=null&&items.size()>0){
            BigDecimal sum=new BigDecimal("0");
            for (OrderConfirmItemVo item : items) {
                BigDecimal multiply = item.getSkuPrice().multiply(new BigDecimal(item.getCountNum() + ""));
                sum=sum.add(multiply);
            }
            return sum;
        }
        return null;
    }

    //应付金额
    //动态计算出应付金额
    private BigDecimal payPrice;
    //默认应付金额等于总金额
    public BigDecimal getPayPrice() {
        return getTotal();
    }
}
